# 需求说明：通过手动获取的淘宝Cookie，实现Selenium跳过登录步骤，直接进入登录后状态
# 核心逻辑：Cookie是服务器识别用户身份的凭证，登录成功后服务器会下发Cookie，Selenium添加有效Cookie后，服务器会判定为已登录
# 操作步骤：
# 1). 手动登录淘宝，从浏览器中获取登录状态相关的Cookie（需完整获取核心Cookie，而非单个）
# 2). 用Selenium添加获取到的Cookie，刷新页面后即可实现免登录，后续可执行购物车、订单等操作

# 导入time模块：用于时间相关操作（如后续扩展时间戳、等待控制，此处保留备用）
import time
# 从time模块导入sleep函数：用于添加操作间隔，等待页面加载或Cookie生效（此处注释未启用，保留备用）
from time import sleep
# 从selenium库导入webdriver模块：Selenium核心模块，用于创建浏览器驱动、控制浏览器行为
from selenium import webdriver
# 导入ActionChains类：用于实现鼠标悬停、拖拽等复杂交互动作（此处未使用，保留原导入供后续扩展）
from selenium.webdriver import ActionChains
# 导入By类：Selenium4+推荐的元素定位枚举类，规范定位方式（此处未直接使用，保留备用）
from selenium.webdriver.common.by import By

# 从selenium导入Keys类：用于模拟键盘按键操作（如Enter、Tab等，此处未使用，保留原导入）
from selenium.webdriver.common.keys import Keys
# 导入WebDriverWait类：用于实现显式等待（精准等待元素加载，此处未使用，保留原导入供后续扩展）
from selenium.webdriver.support.wait import WebDriverWait

# 1. 初始化并启动Chrome浏览器
# executable_path参数：指定本地ChromeDriver驱动的绝对路径（适配Selenium3及以下版本）
# 驱动作用：作为Python代码与Chrome浏览器的通信桥梁，实现对浏览器的控制（打开页面、操作元素等）
driver = webdriver.Chrome(executable_path='D:/chrome_driver/chromedriver.exe')
# 注释：Selenium4及以上版本推荐写法（无需手动下载驱动，自动匹配浏览器版本）
# 需提前安装webdriver-manager库：pip install webdriver-manager
# driver = webdriver.Chrome() # 创建浏览器对象，自动管理驱动

# 最大化浏览器窗口：确保页面所有元素完整显示，避免因窗口过小导致元素不可见或操作失败
driver.maximize_window()

# 2. 访问淘宝主站（关键步骤！必须先访问目标域名，否则Cookie的domain不匹配，无法添加成功）
# get()方法：Selenium核心方法，加载指定的URL（此处为淘宝官网首页）
driver.get("https://www.taobao.com")

# ---------------------- 核心操作1：添加手动获取的Cookie ----------------------
# 注释说明：手动获取Cookie的操作指引（需用户提前手动完成）
# 1. 打开Chrome浏览器，手动访问https://www.taobao.com，输入账号密码完成登录；
# 2. 登录成功后，按F12打开开发者工具 → 切换到Application（应用）选项卡 → 左侧Storage → Cookies → https://www.taobao.com；
# 3. 从列表中复制需要的Cookie（需包含name和value，淘宝需多个核心Cookie，而非仅单个）；
# 4. 将复制的Cookie名称和值替换到下方字典中，通过add_cookie()方法添加到浏览器

# add_cookie()方法：向当前浏览器添加单个Cookie，参数为字典格式，必填键为"name"（Cookie名称）和"value"（Cookie值）
# 注意：原代码中Cookie名称改为"cookie1"，但淘宝登录需要多个核心Cookie（如BDUSS、cna、isg、_tb_token_等），仅添加这一个无法成功登录
driver.add_cookie({"name": "cookie1", "value": "XJUNk9OcVZZbmR1S2VYLXM1bTdPdnpjRzlEUDdtQ1d-bkVBWnBrdk1BT1pOakJwSUFBQUFBJCQAAAAAAAAAAAEAAAD7Qa1fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmpCGmZqQhpY"})

# ---------------------- 辅助操作：获取并打印当前浏览器的所有Cookie ----------------------
# get_cookies()方法：获取当前浏览器中所有已存在的Cookie，返回列表格式，每个元素是一个Cookie字典（包含name、value等属性）
cookies = driver.get_cookies()
# 打印所有Cookie的完整内容（用于调试，确认刚才添加的"cookie1"是否成功写入）
print("cookies内容为：", cookies)

# 遍历所有Cookie，仅打印每个Cookie的名称（简化输出，快速查看已添加的Cookie列表，验证"cookie1"是否存在）
for co in cookies:
    print(co['name'])

# ---------------------- 核心操作2：刷新页面使Cookie生效 ----------------------
# refresh()方法：刷新当前页面，让服务器重新读取浏览器中的Cookie
# 关键：添加Cookie后必须刷新页面，服务器才能识别Cookie对应的登录状态，否则页面仍显示未登录
driver.refresh()

# 注释：暂停2秒（用于观察刷新后的页面状态，确认是否登录成功，实际项目中可根据需求启用）
# sleep(2)

# 注释：关闭浏览器并释放资源（实际项目中可根据后续操作需求决定是否启用，此处先注释以观察登录效果）
# driver.quit()